#pragma once

#include "Core.h"
#include "Layer.h"
#include <vector>

namespace Orange
{
	class LayerStack
	{
	public:
		LayerStack();
		~LayerStack();

		void PushLayer(Layer *layer);
		void PushOverLayer(Layer *overLayer);
		void PopLayer(Layer *layer);
		void PopOverLayer(Layer *layer);

		std::vector<Layer *>::iterator begin() { return m_Layers.begin(); };
		std::vector<Layer *>::iterator end() { return m_Layers.end(); };

	private:
		std::vector<Layer *> m_Layers;
		unsigned int m_LayerInsertIndex = 0;
	};
}
